/**
 * 
 */
package org.vsg.stock.core.indicator.coordinate;

import java.util.List;

import org.vsg.stock.core.kline.DailyKLineStock;

/**
 * @author Bill Vison
 *
 */
public interface Coordinate<T extends DailyKLineStock> {
	
	/**
	 * initialize coordinate environment 
	 */
	void init();
	
	
	CoordinatePoint convertToCoordinatePoint(OriginalDataPoint relaPoint);
	
	List<CoordinatePoint> convertToCoordinatePoint(T klsList);
	
	
	List<CoordinatePoint> convertToCoordinatePoints(List<T> klsList);
	
	/**
	 * 
	 * @param points
	 * @return
	 */
	List<T> restoreToKLineDate(List<CoordinatePoint> points);
	
	/**
	 * 
	 * @param point
	 * @return
	 */
	OriginalDataPoint restoreToOriginalDataPoint(CoordinatePoint point);
	
	
	/**
	 * get the origin point in the coordinate 
	 * @return
	 */
	CoordinatePoint getOrigin();
	
	/**
	 * defined op convert 
	 * @param converter
	 */
	void setOPConverter(OPConverter converter);
	
	
	

}
